home *** CD-ROM | disk | FTP | other *** search
/ Workbench Add-On / Workbench Add-On - Volume 1.iso / Music / MIDI / MidiPlay / ARexx / D10ToneChange.rexx < prev    next >
OS/2 REXX Batch file  |  1995-08-23  |  724b  |  45 lines

  1. /* This script is made for Roland D10. Modify it to work on your setup.
  2.    This script changes tone number of timbre on channel 1.
  3.    Parameters: GroupNumber ToneNumber */
  4.  
  5. options results
  6. parse arg Group0 Tone0 .
  7.  
  8. ManuID = 41
  9. DevID = 0
  10. ModelID = 16
  11. CmdID = 12
  12. Address = "0 0 0"
  13.  
  14. Group = x2c(Group0)
  15. Tone = x2c(Tone0)
  16.  
  17. MyStr = Address c2x(Group) c2x(Tone)
  18.  
  19. Checksum = d2c(128-CalcChecksum(MyStr))
  20.  
  21.  
  22. address 'MidiPlay_rexx'
  23. 'sysex' ManuID DevID ModelID CmdID MyStr c2x(Checksum)
  24.  
  25. exit
  26.  
  27.  
  28.  
  29. /* This function calculates the checksum of a hexadecimal string */
  30.  
  31. CalcChecksum:
  32.  
  33. parse arg DStr
  34.  
  35. val = 0
  36.  
  37. do while DStr ~= ""
  38.     parse var DStr M1 M2
  39.     r1 = c2d(x2c(M1))
  40.     val = c2d(bitand(d2c(val + r1),'7f'x))
  41.     DStr = M2
  42. end
  43.  
  44. return val
  45.